#ifndef UTHOBJECT_H_
#define UTHOBJECT_H_

#include "UTHValue.h"
#include <map>
#include <vector>
#include <boost/thread/mutex.hpp>

namespace phnq
{
	namespace uth
	{
		struct uth_map_entry;
	
		class UTHObject : public UTHValue
		{
			public:
				UTHObject();
				~UTHObject();
				void set(string key, string value);
				void set(string key, UTHValue *value);
				UTHValue* get(string key);
				vector<string> getKeys();
				void serialize(stringbuf *sb);
		
			private:
			    boost::mutex writeMutex;
				map<string,UTHValue*> values;
		};
	}
}

#endif //UTHOBJECT_H_
